Импорт весов и смещений

(* необходимо наличие в папке с ноутбуком файла model.txt! *)
SetDirectory@NotebookDirectory[];
{u,v,U,V}=ToExpression/@StringSplit[Import["model.txt"],"\n"];
Dimensions/@{u,v,U,V} (* размеры векторов смещений и матриц весов *)

Нейросеть

σ[x_]:=(1./(1+Exp[-x])); (* функция активации *)

(*функция Forward Pass*)
ForwPass[x_]:=Module[{p,q,y},
p=V.x+v;
y=σ[p];
q=U.y+u;
σ[q] (* =z (унитарный код цифры) *)
];

Тестовая выборка

samples={,,,,,,,,,};
in=Flatten/@ImageData/@samples; (* преобразование изображений во входные вектора *)

пример применения

x=in[[7]]; (* выбор входного вектора *)
z=ForwPass[x]; (* выходной вектор (код цифры) *)
ListLinePlot[z,PlotRange->Full,InterpolationOrder->2](* графическое представление унитарного кода *)

Оптическое распознавание цифр

(* функция распознавания *)
OCR[img_]:=Module[{x,out},
x=Flatten@ImageData@ColorConvert[img,"Grayscale"]; (* преобразование входного изображения в вектор *)
out=ForwPass[x]; (* применение нейросети *)
First@Ordering[out,-1]-1 (* преобразование выходжного унитарного кода в соответствующее число *)
];

тест распознавания

(* можно подставлять свои изображения размера 28\[Cross]28 px *)

OCR[]